home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / plain / contrib / cellular / cell3.tex < prev    next >
Encoding:
Text File  |  1989-11-22  |  4.1 KB  |  133 lines

  1. % File:       TeX Inputs Cell3.tex
  2. % Author:     J E Pittman
  3. % Bitnet:     JEPTeX@TAMVenus
  4. % Internet:   JEPTeX@Venus.TAMU.EDU
  5. % Date:       October 11, 1988
  6. %
  7. % Process the column and row span info.
  8. %
  9. \declaredimen\expansion
  10. %
  11. \edef\everycolumn{\everycolumn\expansion=\zeropt\relax}%
  12. \edef\everyrow{\everyrow\expansion=\zeropt\relax}%
  13. %
  14. \catcode`_=11 % used to protect local control sequence names.
  15. %
  16. %\message{\string\row_span_info=\the\row_span_info}% debug
  17. %\message{\string\column_span_info=\the\column_span_info}% debug
  18. %
  19. \def\process#1#2#3{\relax
  20.    \last_cell=#3\relax
  21.    \first_cell=\last_cell
  22.    \advance \first_cell \by -#1\relax
  23.    \span_size=#2\relax
  24. %
  25. % Compute the gap between the size of the span and the total size of 
  26. % the cells spanned.
  27. %
  28.    \gap=\span_size
  29.    \forcount \cell_number=\first_cell to \last_cell by 1 do
  30.       \everycell
  31.       \get_cell_number_data
  32.       \advance \gap \by -\cell_size
  33.       \advance \gap \by -\expansion
  34.       \endfor \cell_number
  35. %  \message{\string\first_cell=\the\first_cell}% debug
  36. %  \message{\string\last_cell=\the\last_cell}% debug
  37. %  \message{\string\span_size=\the\span_size}% debug
  38. %  \message{\string\gap=\the\gap}% debug
  39. %
  40. % If the gap is 0pt or less, nothing needs to be done, else search for 
  41. % the minimum expansion that can be applied to every cell with a 
  42. % current expansion less than the expansion found such that the span 
  43. % is properly accomadated.
  44. %
  45.    \ifdim \gap>\zeropt
  46.       \expandable_cells=#1\relax
  47.       \advance \expandable_cells \by 1
  48.       \trial_expansion=\zeropt
  49.       \whilenot\search \ifdim\gap=\zeropt do
  50. %        \message{\string\gap=\the\gap}% debug
  51.          \ifnum \expandable_cells=0
  52.             \advance \trial_expansion \by \expansion
  53.          \else
  54.             \multiply \trial_expansion \by \expandable_cells
  55.             \advance \trial_expansion \by \gap
  56.             \divide \trial_expansion \by \expandable_cells
  57.             \expandable_cells=0
  58.          \fi
  59.          \gap=\span_size
  60. %        \message{\string\trial_expansion=\the\trial_expansion}% debug
  61.          \forcount \cell_number=\first_cell to \last_cell by 1 do
  62.             \everycell
  63.             \get_cell_number_data
  64.             \advance \gap \by -\cell_size
  65.             \ifdim \expansion>\trial_expansion
  66.                \advance \gap \by -\expansion
  67.             \else
  68.                \advance \gap \by -\trial_expansion
  69.                \advance \expandable_cells \by 1
  70.             \fi
  71.             \endfor \cell_number
  72.          \temp_dimen=1sp
  73.          \multiply \temp_dimen \by \expandable_cells
  74.          \ifdim \gap>-\temp_dimen
  75.             \ifdim \gap<\temp_dimen
  76.                \gap=\zeropt
  77.             \fi
  78.          \fi
  79.          \endwhilenot \search
  80.       \forcount \cell_number=\first_cell to \last_cell by 1 do
  81.          \everycell
  82.          \get_cell_number_data
  83.          \ifdim \expansion<\trial_expansion
  84.             \let\info=\relax
  85.             \edef\temp{\the\cell_number>\info
  86.                   {\expansion=\the\trial_expansion\relax}}%
  87.             \let\info=\cell_info
  88.             \x_after \add_data \temp
  89.             \ifnum\tracingexpansions>0
  90.                \message{Expanded \the\cell_number}%
  91.                \message{by \the\trial_expansion}%
  92.                \message{from \the\cell_size}%
  93.                \advance \cell_size \by \trial_expansion
  94.                \message{to \the\cell_size.}%
  95.             \fi
  96.          \fi
  97.          \endfor \cell_number
  98.    \fi
  99.    }%
  100. %
  101. \declarecount\first_cell
  102. \declarecount\last_cell
  103. \declaredimen\span_size
  104. \let\expandable_cells=\temp_count
  105. \declaredimen\trial_expansion
  106. \let\gap=\scratch_dimen
  107. %
  108. \let\cell_number=\row_number
  109. \let\everycell=\everyrow
  110. \let\get_cell_number_data=\get_row_number_data
  111. \let\cell_info=\row_info
  112. \let\cell_size=\rowheight
  113. \ifnum\tracingexpansions>0
  114.    \message{Checking row expansions.}%
  115. \fi
  116. \the\row_span_info
  117. %
  118. \let\cell_number=\column_number
  119. \let\everycell=\everycolumn
  120. \let\get_cell_number_data=\get_column_number_data
  121. \let\cell_info=\column_info
  122. \let\cell_size=\columnwidth
  123. \ifnum\tracingexpansions>0
  124.    \message{Checking column expansions.}%
  125. \fi
  126. \the\column_span_info
  127. %
  128. \let\process=\relax
  129. %
  130. \catcode`_=8 % back to normal
  131. %
  132. \endinput
  133.